#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

int main() {
    int n,m,t;
    cin>>n>>m;
    vector<int> a;//学习效率
    vector<int> b;//存是否清醒
    for (int i=0; i<n; ++i) {
        scanf("%d", &t);
        a.push_back(t);
    }
    for (int i=0; i<n; ++i) {
        scanf("%d", &t);
        b.push_back(t);
    }
    int cnt = 0; //预处理所有标志位为1的总和
    for (int i=0; i<n; ++i) {
        if (b[i]==1) {
            cnt += a[i];
        }
    }
    int res = cnt; //res存储结果
    for (int i=0; i<n-m; ++i) {
        int cnt_t = 0; //用于存储i到i+m区间内的所有标志为0的分数总和，得到翻转的加成
        for (int j=0; j<m; ++j) {
            if (b[i+j]==0) { //得到区间内标志位为0的数值
                cnt_t += a[i+j];
            }
        }
        if (cnt + cnt_t > res) {
            res = cnt + cnt_t; //记录最大的翻转和
        }
    }
    printf("%d\n", res);
    return 0;
}
